package ar.maikoova.modelsControllers;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;
import ar.maikoova.bd.Conector;
import ar.maikoova.bd.ParametrosConexion;
import ar.maikoova.models.Terreno;



public class TerrenoController {

	Conector c;
	Connection conexion;
	
	public int insert (Terreno terreno) throws SQLException{
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.terrenoCargar (?, ?, ?, ?, ?, ?, ?, ?)}");
			
			cs.setString(1, terreno.getCodigo());
			cs.setFloat(2, terreno.getAncho());
			cs.setFloat(3, terreno.getLargo());
			cs.setString(4, terreno.getDireccionTerreno());
			cs.setString(5, terreno.getAntiguoDuenioTerreno());
			cs.setString(6,  terreno.getFechaCompraTerreno());
			cs.setFloat(7, terreno.getPrecioCompra());
			cs.registerOutParameter(8, Types.INTEGER);
			cs.execute();
			return cs.getInt(8);
			//devuelve 0 si no pudo realizarlo, 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
	
	}

	public int update(Terreno terreno) throws SQLException {
		//Actualiza los datos de un terreno a partir de su codigo
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.terrenoCargar (?, ?, ?, ?, ?, ?, ?, ?)}");
			cs.setString(1, terreno.getCodigo());
			cs.setFloat(2, terreno.getAncho());
			cs.setFloat(3, terreno.getLargo());
			cs.setString(4, terreno.getDireccionTerreno());
			cs.setString(5, terreno.getAntiguoDuenioTerreno());
			cs.setString(6,  terreno.getFechaCompraTerreno());
			cs.setFloat(7, terreno.getPrecioCompra());
			cs.registerOutParameter(8, Types.INTEGER);
			cs.execute();
			return cs.getInt(8);
			//devuelve 0 si no pudo realizarlo, 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
	}
	
	public int delete(Terreno terreno) throws SQLException {
		//Elimina un terreno a partir de su codigo
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.terrenoEliminar (?, ?)}");
			cs.setString(1, terreno.getCodigo());
			cs.registerOutParameter(2, Types.INTEGER);
			cs.execute();
			return cs.getInt(2);
			//devuelve 0 si no pudo realizarlo, 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
		
	}
	
}
